  
                             - D I S I D E N T S - H A C K  J O U R N A L -

                                               Numero 2
                                                  X







                                             TITLE:  Construyendonos un scanner de cgis en Vbasic 
                                             Author: W3ndig0
                                             Tema:   Bricolage domestico
                                             DISIDENTS ESPAA 2001 -  LOS FUERA DE LA LEY


 





-------------------------------------------------------------------------------------------------
------------[ Construyendonos un scanner de cgis en Vbasic  ]------------------------------------
-------------------------------------------------------------------------------------------------
----[1.0 Lista de la compra                                                                     -                      
----[2.0 Planteamiento                                                                          -                  
----[2.1 Que es un scanner de CGI ?                                                             -
----[2.2 Como textea las vulnerabilidades?                                                      -                                     -
----[2.3 Que es el mtodo GET?                                                                  -                         
----[2.4 Como realizamos el metodo GET?                                                         -                                         -
----[2.5 Como sabemos si el metodo ha sido ejecutado con exito?                                 -
----[2.6 CODIFICACION:                                                                          -
----[2.7 DESPEDIDA                                                                              -
----[2.8 DOCUMENTOS Y LINKS DE INTERES                                                          -
-------------------------------------------------------------------------------------------------





-------------------------------------------------------------------------------------------------
------------[1.0 Lista de la compra ]------------------------------------------------------------
-------------------------------------------------------------------------------------------------

 	1 Visual basic 4,5, o 6.
	1 Libreria socket-wr3nch de catalyst
	(X) de bugs cgi.



-------------------------------------------------------------------------------------------------
------------[2.0 Planteamiento ]-----------------------------------------------------------------
-------------------------------------------------------------------------------------------------

Tenemos que tener varias cosas claras a la hora de crear un scanner de vulnerabilidades de cgis
y entre otras cosas es saber como funciona, el scanner y que metodos usa para descubrir la
vulnerabilidad.




-------------------------------------------------------------------------------------------------
------------[2.1 Que es un scanner de CGI ? ]----------------------------------------------------
-------------------------------------------------------------------------------------------------

	Un scanner de cgi es un programa que textea las debilidades de los cgi en 
	una pagina, o paginas.(seguro que esto ya lo sabias).



-------------------------------------------------------------------------------------------------
------------[2.2 Como textea las vulnerabilidades? ]---------------------------------------------
-------------------------------------------------------------------------------------------------

	Las vulnerabilidades suelen ser texteadas mediante el mtodo GET.



-------------------------------------------------------------------------------------------------
------------[2.3 Que es el mtodo GET? ]---------------------------------------------------------
-------------------------------------------------------------------------------------------------

		Es un mtodo del protocolo HTTP, mediante el cual se solicita al servidor
	por el puerto 80 (normalmente) una pagina o un archivo. El servidor nos respondera
	con una respuesta del tipo, envia mas cosas, pero esto es solo lo que nos interesa
        en esta ocasion:

	HTTP/1.0 200 OK

		codigo HTML
		

            	Profundicemos...
			HTTP/1.0 > nos informa de la version de protocolo vigente.

			200      > respuesta numerica que nos informa que se ha ejecutado
				   el comando con exito.

			ok.      > Descripcion en formato texto de la operacion. Osea traduccion
				de la respuesta numerica a texto.


-------------------------------------------------------------------------------------------------
------------[2.4 Como realizamos el metodo GET? ]------------------------------------------------
-------------------------------------------------------------------------------------------------

	Definimos un socket, stream y de la familia inet, a continuacion conectamos al puerto 80
	y enviamos la cadena:

		"GET " & Trim(bugg) & " HTTP/1.0" & Vbcrlf






-------------------------------------------------------------------------------------------------
------------[2.5 Como sabemos si el metodo ha sido ejecutado con exito? ]------------------------
-------------------------------------------------------------------------------------------------
	
   Leemos del socket exactamente 13 caracteres para ir mas deprisa y optenemos la respuesta
numerica pasandola a formato numrico con la funcion VAL.

	cch = Froggyform.Socket(Socketindex).Read(buffer, 13)
	  
        RESPUESTA=Val(Right(buffer, 5)

	Desconectamos el socket para evitar que nos llegen mas datos al socket. y asi tenerlo 
        siempre limpio.

        Froggyform.Socket(Socketindex).Action = SOCKET_DISCONNECT

	SI obtenemos que RESPUESTA=200 habremos localizado el bug.

	Si obtenemos que RESPUESTA=404-403... no habremos ejecutado el mtodo asiqueo hay ese bug.


	Sencillo verdad?...






-------------------------------------------------------------------------------------------------
------------[2.6 CODIFICACION: ]-----------------------------------------------------------------
-------------------------------------------------------------------------------------------------

	Solo incluire la rutina correspondiente a la creacion del socket, (tener en cuenta que 
se trata de una matriz de sockets), y el scanner propiamente dicho.


Public Sub Configuracion(HostDestino As String, Sindexb As Integer, indiceSocket As Integer)
		If Ptimeout = 0 Then MsgBox "No has seleccionado un tiempo de espera-TIMEOUT": Exit Sub
	Hostname = HostDestino
	Sindex = Sindexb
	Socketindex = indiceSocket
	Scanwindow(Sindex).Caption = Hostname
	Rem el socket(0) ya existe
	If Socketindex > 0 Then
	Load Froggyform.Socket(Socketindex)
	End If
		Froggyform.Socket(Socketindex).AddressFamily = AF_INET
		Froggyform.Socket(Socketindex).Protocol = IPPROTO_IP
		Froggyform.Socket(Socketindex).SocketType = SOCK_STREAM
		Froggyform.Socket(Socketindex).Binary = False
		Froggyform.Socket(Socketindex).BufferSize = 2024
		Froggyform.Socket(Socketindex).Timeout = Ptimeout
		Froggyform.Socket(Socketindex).RemotePort = 80
		Froggyform.Socket(Socketindex).Hostname = Hostname
		Froggyform.Socket(Socketindex).Blocking = True

End Sub

Public Sub Scan()
	Connect = True
	Dim bugg As String
	Dim buffer As String
	Dim cch As Integer
        Dim Cabecera() As String
	Numarch = FreeFile


	Open App.Path & "\" + "Froggybuglist.txt" For Input As #Numarch

While Not EOF(Numarch)
        
        DoEvents
       Froggyform.Socket(Socketindex).Action = SOCKET_CONNECT
            Input #Numarch, bugg
            
            Scanwindow(Sindex).StatusBar.SimpleText = "Probando :" & Trim(bugg)
            
            ReDim strHeader(4)
            Cabecera(1) = "GET " & Trim(bugg) & " HTTP/1.0" & Chr(13) & Chr(10)
            cabecera(2) = "Host: " & "hola Soy un programa en basic :)P" & Chr(13) & Chr(10)
            cabecera(3) = "Accept: text/*" & Chr(13) & Chr(10)
            cabecera(4) = Chr(13) & Chr(10)
            
            For a = 1 To 4
            Froggyform.Socket(Socketindex).Write cabecera(a), Len(cabecera(a))
            Next
                    
             
             
                Rem leemos solo los caracteres necesarios, la respuesta normal es HTTP/1.0 200
                cchr = Froggyform.Socket(Socketindex).Read(buffer, 13)
                 
                 Rem cortamos para no recibir datos innecesarios
                 Froggyform.Socket(Socketindex).Action = SOCKET_DISCONNECT
                Rem procesamos la cadena para ver la respuesta...
                Rem si la respuesta fuese un 400 cosa mala...
                If Val(Right(buffer, 5)) < 400 Then respuestas bugg & " > Respuesta>>" & Right(buffer, 5) & " >>>ENCONTRADO!!"
                 
             
Wend
            
Close (Numarch)
		
end sub





-------------------------------------------------------------------------------------------------
------------[2.7 DESPEDIDA ]---------------------------------------------------------------------
-------------------------------------------------------------------------------------------------

        Bueno esto ha sido todo desde nuestra seccion el "bricolage en casa", como veis es 
sencillo teneis el froggy en nuestra pagina web, emplea el mismo scanner que aqui os pongo, bueno, 
mas o menos.

      Si quereis mas informacion sobre las respuestas del proto HTTP podeis consultar la: RFC 2616
		

    Que quereis mas informacion o simplemente preguntar cualquier cosa, pasaros por el canal 
#disidents del irc-hispano o bien enviar un email a disidents@yahoo.es







-------------------------------------------------------------------------------------------------
------------[2.8 DOCUMENTOS Y LINKS DE INTERES ]-------------------------------------------------
-------------------------------------------------------------------------------------------------


ref 2616:
Te recomiendo algunas de estas paginas: (en ingles):
	
		http://wwwrn.inf.tu-dresden.de/~gs/Txt-Files/rfc2616.html
		http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 
                                     
          Metodos:    
             (algo flojita)http://www.cs.technion.ac.il/Courses/Computer-Networks-Lab/projects/proxy/http.html
	     http://www.w3.org/Protocols/HTTP/Methods.html
	     http://people.cs.uchicago.edu/~mark/524/lecture4/tsld002.htm (aqui iros moviendo por pagina 
             hay de todo,bien explicado)





                   ---------------------------------------------------
                   -       CONTACTA CONMIGO O CON EL TEAM            -
                   ---------------------------------------------------
                   - NICK:	    W3ndig0                          -
                   - CARGO:    Director de Disidents Espaa          -    
                   - MAIL:     w3ndig0disidents@yahoo.com	     -	
                   - TEAM:     disidents@yahoo.es                    -
                   ---------------------------------------------------








                     @@-------               @@---------------  
		    @@----                  @@---------       @@@@@@@@@  
		   @@--     @@@@@--        @@-- @@@@@       @     @@  @@@@@@@@@@@@@@@@@@@@@@@@@@@@-------
              @@@@@@    @@ @@      @@ @@@@@@-  @@      @@@ @    @@  @@-----------------------------
             @@        @@ @@@@@   @@ @@---    @@@@@@   @@ @@   @@  @@@@@--------------
            @@        @@     @@  @@ @@ -     @@       @@ @@   @@      @@----------
             @@@@@@@ @@  @@@@@@ @@   @@@@@@@ @@@@@@@ @@  @@ @@	     @@--------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@------
-------------------------------------------------------------------------	



                                                             Disidents Espaa  2001 2 edicion. 
